var prefix = ctx + "cardcecp/batchSendEcpTask";
var isImportData = false;//是否是导入excel数据,当为false时开启明细表编辑状态
var isEdit = false;//记录当前是否是编辑状态
var checkInt = /^[1-9]\d*$/;

$().ready(function () {
    initDictDatas();
    // $("#taskId").val(0);

    console.log(batchList);
    refreshDetailTable(batchList);

    laydate.render({
        elem: '#startTime',
        min: Date.now() + 24*60*60*1000
    });
    
    initFileInput();
});

/**
 * 获取派发总数
 */
function countSendCpNum() {
    var taskId = $("#taskId").val();
    $.ajax({
        type: "GET",
        url: ctx + "/cardcecp/batchSendListDetail/countSendCpNum",
        data: {taskId: taskId},
        async: false,
        error: function (request) {
            parent.layer.alert("Connection error");
        },
        success: function (data) {
            if (data.code == 0) {
                $("#count").val(data.count);
            } else {
                parent.layer.alert(data.msg)
            }
        }
    });
}

function refreshDetailTable(data) {
    $('#exampleTable')
        .bootstrapTable(
            {
                iconSize: 'outline',
                toolbar: '#exampleToolbar',
                striped: true, // 设置为true会有隔行变色效果
                pagination: true, // 设置为true会在底部显示分页条
                singleSelect: true, // 设置为true将禁止多选
                pageSize: 10, // 如果设置了分页，每页数据条数
                pageNumber: 1, // 如果设置了分布，首页页码
                showColumns: false, // 是否显示内容下拉框（选择显示的列）
                sidePagination: "client", // 设置在哪里进行分页，可选值为"client" 或者 "server"
                columns: [
                    {
                        field: 'rowIndex111',
                        title: '序号',
                        formatter: function (value, row, index) {
                            return index + 1;
                        }
                    },
                    {
                        field: 'phone',
                        title: '手机号'
                    },
                    {
                        field: 'name',
                        title: '姓名'
                    },
                    {
                        field: 'amount',
                        width: 300,
                        title: '数量',
                        formatter: function (value, row, index) {
                            if(!isImportData){
                                if(value == null || value == 'null' || value == '-' || value === ''){
                                    return '请输入派券数量';
                                }else{
                                    return value;
                                }
                            }else{
                                return value;
                            }

                        }
                    },
                    {
                        field: 'failedReason',
                        title: '校验结果',
                        visible:isImportData,
                        formatter: function (value, row, index) {
                            if (row.state == 0) {
                                return '<span style="color:green">' + value + '</span>'
                            } else {
                                return '<span style="color:red">' + value + '</span>'
                            }
                        }
                    }],
                onClickCell: function (field, value, row, $element) {
                    if(isImportData){
                        //导入excle时不允许编辑
                        return false;
                    }
                    var nowIndex = $element[0].parentElement.rowIndex;
                    if(!isEdit){
                        if(field=='amount'){
                            isEdit = true;

                            var innerInputValue = value;
                            if(innerInputValue == null || innerInputValue == 'null' || innerInputValue == '-'){
                                innerInputValue = '';
                            }

                            $element[0].innerHTML=`<input id='inputCell' 
             	 					oninput="this.value = this.value.replace(/[^0-9]/g, '').replace(/^0[0-9]/g,'0');"
             	 					style='width:230px;' 
             	 					type='text' 
             	 					name='inputCell'
             	 					 autocomplete='off' 
             	 					 value='${innerInputValue}'>`;

                            $("#inputCell").focus();
                            $("#inputCell").blur(function(){
                                isEdit = false;
                                var newValue = $("#inputCell").val();
                                //验证派券数量是否合法
                                if(!checkInt.test(newValue)){
                                    if('0' != newValue){
                                        newValue = '';
                                        //parent.layer.alert('请输入0以上的整数');
                                    }
                                }else{
                                    //数量合法,累加分配的数量,减去旧值,加上新值
                                    var oldRowValue = row[field];
                                    if(checkInt.test(oldRowValue)){
                                        oldRowValue = parseInt(oldRowValue);
                                    }else{
                                        oldRowValue = 0;
                                    }
                                    $('#count').val(parseInt($('#count').val())+parseInt(newValue)-oldRowValue);
                                }

                                if(newValue == null || newValue == 'null' || newValue == '-' || newValue === ''){
                                    newValue = '';
                                }
                                row[field] = newValue;

                                $("#inputCell").remove();
                                $('#exampleTable').bootstrapTable('updateCell', {
                                    index: nowIndex-1,
                                    field:field,
                                    value: newValue
                                });


                            });
                        }
                    }

                },
                data:data
            });
}

//构建字典数据
function initDictDatas() {

    $('#sendStationId').bootstrapSelect({
        url: ctx + 'plat/stationInfo/getStationList',
        valueField: 'stationId',
        textField: 'stationName',
        placeholder: "请选择派券油站"/*,
		onChange:function(value){
			if(value == null || value == ''){
				return false;
			}
			//级联派券人
			$('#sendStationUser').bootstrapSelect({
				url:ctx+'plat/stationInfo/getUserList/'+value,
				valueField: 'userId',
				textField: 'userName',
				placeholder: "请选择派券人"
			});
			//bootstrap-select使用规则是先执行操作然后refresh
			$('#sendStationUser').selectpicker('refresh');
		}*/
    });
    $('#cpId').bootstrapSelect({
        url: ctx + '/coupon/cpInfo/listForBatch',
        valueField: 'cpId',
        textField: 'cpName',
        placeholder: "请选择优惠券",
        onChange: function (value) {
            $.ajax({
                type: "GET",
                url: ctx + "/coupon/cpInfo/getById/" + value,
                async: false,
                error: function (request) {
                    parent.layer.alert("Connection error");
                },
                success: function (data) {
                    if (data.code == 0) {
                        $("#cpNum").val(data.cp.cpNum - data.cp.cpGeneNum);
                    } else {
                        parent.layer.alert(data.msg)
                    }
                }
            });
        }
    });
    $('#enterpriseId').bootstrapSelect({
        url: ctx + '/plat/enterprise/listForSearch',
        valueField: 'id',
        textField: 'enterpriseName',
        placeholder: "请选择服务企业",
        onChange: function (value) {
            $("#enterpriseName").val($("#enterpriseId option:checked").text());
        }
    });
    $('#recieveListId').bootstrapSelect({
        url: ctx + '/plat/roster/listForSearch',
        valueField: 'rosterId',
        textField: 'rosterName',
        placeholder: "请选择派发人名单",
        onChange: function (value) {
            //预创建数据
            if(value && value != null && value != ''){
                save();
                if (!$("#taskId").val()) {
                    layer.msg("保存草稿异常，请联系系统管理员");
                    return;
                }
                //选择名单后,刷新名单明细,启用名单明细编辑功能
                refreshDetailTableBySelect(value);
                //展示名单明细
                $.ajax({
                    type: "GET",
                    url: ctx + "plat/roster/get",
                    data: {rosterId:value},// 你的formid
                    async: false,
                    error: function (request) {
                        parent.layer.alert("Connection error");
                    },
                    success: function (data) {
                        if (data.code == 0) {
                            $("#rosterName").val(data.rosterDO.rosterName);
                            $("#rosterCode").val(data.rosterDO.rosterCode);
                            $("#userNum").val(data.rosterDO.rosterDetailSize);
                            $("#enterpriseContactsName").val(data.rosterDO.enterpriseContactsName);
                            $("#enterpriseContactsPhone").val(data.rosterDO.enterpriseContactsPhone);
                            $("#userListDetail").show();
                            //设置服务企业，从名单中获取，并不可修改
                            $('#enterpriseId').prop("disabled",true);
                            $('#enterpriseId').bootstrapSelect('setValue', data.rosterDO.enterpriseId);
                        } else {
                            parent.layer.alert(data.msg)
                        }
                    }
                });
            }


        }
    });
    $('#recieveListId').bootstrapSelect('setValue', recieveListId);
    $('#cpId').bootstrapSelect('setValue', cpId);
    $('#sendStationId').bootstrapSelect('setValue', sendStationId);
    $('#enterpriseId').bootstrapSelect('setValue', enterpriseId);
}

/**
 * 临时保存
 */
function save() {
    /*if (! checkParams()){
        return;
    }*/
    $.ajax({
        type: "POST",
        url: ctx + "cardcecp/batchSendEcpTask/save",
        data: $('#signupForm').serialize(),// 你的formid
        async: false,
        error: function (request) {
            parent.layer.alert("Connection error");
        },
        success: function (data) {
            if (data.code == 0) {
                $("#taskId").val(data.id);
                $("#tmpTaskId").val(data.id);
            } else {
                parent.layer.alert(data.msg)
            }
        }
    });

}

/**
 * 校验表单参数
 * @returns {boolean}
 */
function checkParams() {
    var taskName = $("#taskName").val();
    if (!taskName) {
        layer.msg("请输入任务名称");
        return false;
    }
    if (taskName.length > 30) {
        layer.msg("任务名称大于30个字");
        return false;
    }
    if (!$("#cpId").val()) {
        layer.msg("请选择优惠券");
        return false;
    }
    if (!$("#total").val() || $("#total").val() <= 0) {
        layer.msg("请输入正确的派券总数");
        return false;
    }
    if (!$("#startTime").val()) {
        layer.msg("请选择派券时间");
        return false;
    }
    if (!$("#sendStationId").val()) {
        layer.msg("请选择派任务归属");
        return false;
    }
    if (!$("#enterpriseId").val()) {
        layer.msg("请选择服务企业");
        return false;
    }
    return true;
}

function importBatch() {

    save();
    if (!$("#taskId").val()) {
        layer.msg("保存草稿异常，请联系系统管理员");
        return;
    }
    $("#myModal").modal();
    
}

function closeWindow() {
    var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
    parent.layer.close(index);
}

/**
 * 最终提交
 */
function submit() {
    //验证基础表单信息
    if (!checkParams()) {
        return;
    }
    //验证当前名单是否有数据
    if ($("#exampleTable").bootstrapTable("getOptions").totalRows == 0) {
        layer.msg("当前名单没有数据，无法提交");
        return;
    }

    //验证派券数量和预期派券数量是否一致
    if ($("#total").val() != $("#count").val()) {
        layer.msg("名单中派券合计与预期派券数量不匹配，请仔细核对");
        return;
    }

    //验证名单列表是否存在不和要求的数据
    if (!checkListData()) {
        return;
    }
    var detailData = $('#exampleTable').bootstrapTable('getData');

    $.ajax({
        type: "POST",
        //dataType: "json",
        //contentType:"application/json; charset=utf-8",
        url: ctx + "cardcecp/batchSendEcpTask/submit",
        data: {
            taskId:$('#taskId').val(),
            taskName:$('#taskName').val(),
            recieveListId:$('#recieveListId').val(),
            cpId:$('#cpId').val(),
            total:$('#total').val(),
            startTime:$('#startTime').val(),
            sendStationId:$('#sendStationId').val(),
            enterpriseId:$('#enterpriseId').val(),
            enterpriseName:$("#enterpriseName").val(),
            isImportData:isImportData,
            detailData:JSON.stringify(detailData)
        },
        async: false,
        error: function (request) {
            parent.layer.alert("Connection error");
        },
        success: function (data) {
            if (data.code == 0) {
                parent.layer.msg(data.msg);
                parent.reLoad();
                closeWindow();
            } else {
                parent.layer.msg(data.msg)
            }
        }
    });

}


function checkListData() {
    var taskId = $("#taskId").val();
    if (!$("#taskId").val()) {
        layer.msg("系统异常，请联系系统管理员");
        return false;
    }

    if(!isImportData){
        //如果是选择的名单,验证是否存在未分配数据的人员
        var detailData = $('#exampleTable').bootstrapTable('getData');
        for(var i = 0;i<detailData.length;i++){
            var userInfo = detailData[i];
            if(userInfo.amount == null || userInfo.amount === '' || userInfo.amount == 'null'){
                layer.msg("第"+(i+1)+"行尚未分配派券数量");
                return false;
            }
        }
        return true;
    }else{
        //如果是导入的名单,直接提交
        return true;
    }
}


function initFileInput(){

    $("#batchTaskUsers").fileinput({
        //'uploadUrl': prefix + '/doBatchImport?shopId',
        removeFromPreviewOnError: true, //当选择的文件不符合规则时，例如不是指定后缀文件、大小超出配置等，选择的文件不会出现在预览框中，只会显示错误信息
        validateInitialCount: true,//开启校验文件数量限制
        maxFileCount: 1,//允许最多上传文件数量
        dropZoneEnabled: false,//是否显示拖拽区域
        maxFileSize: 10240,//单位为kb，如果为0表示不限制文件大小
        showPreview:false,
        allowedPreviewTypes:['image'],
        'showUpload':false,
        'theme': 'fas',
        'language': 'zh',
        overwriteInitial: false,
        initialPreviewAsData: false,
        allowedFileExtensions: ['xlsx', 'xls']
    }).on("fileuploaded", function (event, data, previewId, index) {
        if (data.response.count > 0) {
            countSendCpNum();
        } else {
            layer.msg(data.response.msg);
        }
    });

}

function submitBatchImport(){

    //只有选择文件后才能提交batchTaskUsers
    if($('#batchTaskUsers').val() == ''){
        parent.layer.alert('请选择上传的文件后再提交');
        return false;
    }

    //清空选择的名单
    $("#recieveListId").bootstrapSelect('setValue',null);
    $('#exampleTable').bootstrapTable('destroy');

    var formData = new FormData(document.getElementById("batchTaskUsersForm"));
    $.ajax({
        cache : true,
        type : "POST",
        url : prefix+"/doBatchImport",
//		data : $('#signupForm').serialize(),// 你的formid
        data : formData,// 你的formid
        contentType:false,
        processData:false,
        async : false,
        error : function(request) {
            parent.layer.alert("Connection error");
        },
        success : function(data) {
            if (data.code == 0) {
                isImportData = true;
                if(data.importResult == '-1'){
                    refreshDetailTable(data.importFailedData);
                    $('#count').val('0');
                    $('#importErrorMsg').show();
                    $('#importSuccessImg').hide();
                    $('#importFailedImg').show();
                    $('#importFailedImg').css("display","inline");
                }else{
                    refreshDetailTable(data.importSuccessData);
                    //更新派券合计 importCpTotal
                    $('#count').val(data.importCpTotal);
                    $('#importErrorMsg').hide();
                    $('#importSuccessImg').show();
                    $('#importSuccessImg').css("display","inline");
                    $('#importFailedImg').hide();
                }

                $('#importMsgContent').html(data.importMsg);
                $('#importMsgModal').modal('show');
                cancelBatchImport();

            } else {
                //parent.layer.alert(data.msg)
                $('#importErrorMsg').hide();
                $('#importSuccessImg').hide();
                $('#importFailedImg').show();
                $('#importFailedImg').css("display","inline");

                $('#importMsgContent').html('解析失败,非法的excel格式文件!');
                $('#importMsgModal').modal('show');
            }
            $('#enterpriseId').prop("disabled",false);
            $(".btn").removeClass("disabled")
            $("#userListDetail").hide();
        }
    });
}
//关闭导入窗口
function cancelBatchImport(){
    $('#myModal').modal('hide')
}
//关闭导入提示窗口
function closeImportMsgModal(){
    $('#importMsgModal').modal('hide')
}
//选择名单后,刷新名单明细,启用名单明细编辑功能
function refreshDetailTableBySelect(rosterId){

    $.ajax({
        type: "GET",
        url: ctx + "/plat/rosterDetail/getByRosterId",
        data: {rosterId: rosterId,taskId:$("#taskId").val()},
        async: false,
        error: function (request) {
            parent.layer.alert("Connection error");
        },
        success: function (data) {
            isImportData = false;
            $('#count').val(0);
            $('#exampleTable').bootstrapTable('destroy');
            //TODO 开启编辑功能
            refreshDetailTable(data);
        }
    });

}